In the early days of computing, the mainframe computing architecture was commonplace. With the mainframe computing architecture, a mainframe computer is shared by many client users. The user connects to the mainframe computer by way of a terminal. The terminal provides only simple input and output functions in order for the user to interact with the mainframe computer. Applications are stored in and are executed by the mainframe computer, and all application data is resident on the mainframe computer. Such a system has performance scalability problems since all users share the same hardware. Also, the connection between the terminal and the mainframe computer needs to be active and available to allow use of the system.
With the introduction of the personal computer, execution of system and application software completely shifted to the client side. In addition, application data is also stored by the client. Instead of the mainframe computer providing a virtualized environment for each user, the user actually owns and operates a distinct computing environment. A connection between the client and the server is no longer required for use of applications. Servers are instead used primarily to store and share data. This gives the user much more independence and faster user interface performance. Moreover, a personal computer does not suffer the performance problems of mainframe computers created by shared resources and required network connectivity.